Cat Sleeping{Komori, Masataka. 2015} Introduction

Sleep is a natural phenomenon that is ubiquitous for mammals; regardless of species, sleep is a fundamental aspect of mammalian physiology. For humans, sleep specialists recommend that adults get around 7 to 9 hours of sleep per day1, which means that on average we spend about ⅓ of our lives sleeping.

Numerous studies have shown that this need for sleep is tied to a myriad of physical and mental health benefits, including boosting immunity, improving memory and learning functions2, and even enhancing mental and emotional resilience to problems3. Scientists posit that other mammals need sleep for similar reasons, finding that sleep-deprived animals will lose weight despite food intake, and have issues regulating their body temperature, resulting in their death4.

Seal Sleeping{Scheider, Rolf. Sleeping like a Weddell. 2019}

However, despite these undeniable health benefits, sleep also poses considerable risks to the survival of mammals. In a study conducted by Truett Allison and Domenic V. Cicchetti, they explore the “interrelationships between sleep, ecological, and constitutional variables” for 40 mammalian species, including humans5.

Sleep Patterns in Mammals
Species Body Weight1 Brain Weight2 Slow Wave Sleep3 Paradoxical Sleep4 Total Sleep Maximum Life Span (yrs)
Asian elephant 2547.000 4603.00 2.1 1.8 3.9 69.0
Horse 521.000 655.00 2.1 0.8 2.9 46.0
Cow 465.000 423.00 3.2 0.7 3.9 30.0
Pig 192.000 180.00 6.5 1.9 8.4 27.0
Brazilian tapir 160.000 169.00 5.2 1.0 6.2 30.4
Gray seal 85.000 325.00 4.7 1.5 6.2 41.0
Human 62.000 1320.00 6.1 1.9 8.0 100.0
Sheep 55.500 175.00 3.2 0.6 3.8 20.0
Chimpanzee 52.160 440.00 8.3 1.4 9.7 50.0
Goat 27.660 115.00 3.3 0.5 3.8 20.0
Baboon 10.550 179.50 9.1 0.7 9.8 27.0
Patas monkey 10.000 115.00 10.0 0.9 10.9 20.2
Rhesus monkey 6.800 179.00 8.4 1.2 9.6 29.0
Red fox 4.235 50.40 7.4 2.4 9.8 9.8
Vervet 4.190 58.00 9.7 0.6 10.3 24.0
Nine-banded armadillo 3.500 10.80 14.3 3.1 17.4 6.5
Water opossum 3.500 3.90 12.8 6.6 19.4 3.0
Cat 3.300 25.60 10.9 3.6 14.5 28.0
Echidna 3.000 25.00 8.6 0.0 8.6 50.0
Rabbit 2.500 12.10 7.5 0.9 8.4 18.0
Tree hyrax 2.000 12.30 4.9 0.5 5.4 7.5
N. American opossum 1.700 6.30 13.8 5.6 19.4 5.0
Phanlanger 1.620 11.40 11.9 1.8 13.7 13.0
Guinea pig 1.040 5.50 7.4 0.8 8.2 7.6
African giant pouched rat 1.000 6.60 6.3 2.0 8.3 4.5
Tenrec 0.900 2.60 11.0 2.3 13.3 4.5
European hedgehog 0.785 3.50 6.6 4.1 10.7 6.0
Owl monkey 0.480 15.50 15.2 1.8 17.0 12.0
Chinchilla 0.425 6.40 11.0 1.5 12.5 7.0
Rat 0.280 1.90 10.6 2.6 13.2 4.7
Galago 0.200 5.00 9.5 1.2 10.7 10.4
Golden hamster 0.120 1.00 11.0 3.4 14.4 3.9
Tree shrew 0.104 2.50 13.2 2.6 15.8 2.3
Ground squirrel 0.101 4.00 10.4 3.4 13.8 9.0
Eastern American mole 0.075 1.20 6.3 2.1 8.4 3.5
Musk shrew 0.048 0.33 10.8 2.0 12.8 2.0
Big brown bat 0.023 0.30 15.8 3.9 19.7 19.0
Mouse 0.023 0.40 11.9 1.3 13.2 3.2
Little brown bat 0.010 0.25 17.9 2.0 19.9 24.0
Lesser short-tailed shrew 0.005 0.14 7.7 1.4 9.1 2.6

1 Weight in kilograms

2 Weight in grams

3 Non-dreaming hours per day

4 Dreaming hours per day

Their research finds that slow-wave and paradoxical sleep in mammals are tied to physical characteristics such as body size and brain size, and environmental conditions. Moreover, their research produced an overall danger index for each animal, which was calculated as a combination of the predation index, or the likelihood an animal is to be preyed upon, and the sleep exposure index, or the how exposed an animal’s habitat is while they sleep.

Slow-Wave vs. Paradoxical Sleep

Slow-wave sleep involves the stages of non-dreaming sleep and is typically described as “deep sleep”6 while paradoxical sleep is the REM part of the sleep cycle, and is characterized by dreaming sleep7.Together, these contribute to the total hours of sleep in mammals.

Allison and Cichetti find that type of sleep is related in different ways to the survival of mammals. For example, slow wave sleep is negatively associated with the body size of mammals, which implies that longer slow wave sleep cycles can be more dangerous for larger animals. However, paradoxical sleep is associated with a higher predation index, which means that large amounts of this sleep cycle can be risky for prey species.

Ultimately, their findings outline the dimensions of survival while mammals sleep, highlighting the various factors that endanger animals in moments of rest, and how their physical and physiological conditions respond to these dangers.

Monkey Sleeping{Scuffins, Chris. 2015}


  1. Olson, Eric. “How Many Hours of Sleep Do You Need?” Mayo Clinic, Mayo Foundation for Medical Education and Research, 6 June 2019, www.mayoclinic.org/healthy-lifestyle/adult-health/expert-answers/how-many-hours-of-sleep-are-enough/faq-20057898.↩︎

  2. “Benefits of Sleep.” Benefits of Sleep | Healthy Sleep, healthysleep.med.harvard.edu/healthy/matters/benefits-of-sleep. ↩︎

  3. Publishing, Harvard Health. “Sleep and Mental Health.” Harvard Health, www.health.harvard.edu/newsletter_article/sleep-and-mental-health.↩︎

  4. Purves, Dale. “Why Do Humans and Many Other Animals Sleep?” Neuroscience. 2nd Edition., U.S. National Library of Medicine, 1 Jan. 1970, www.ncbi.nlm.nih.gov/books/NBK11108/.↩︎

  5. Allison, T & Cicchetti, Domenic. (1976). Sleep in Mammals – Ecological and Constitutional Correlates. Science (New York, N.Y.). 194. 732-4. 10.1126/science.982039.↩︎

  6. Roth, Thomas. “Slow Wave Sleep: Does It Matter?” Journal of Clinical Sleep Medicine : JCSM : Official Publication of the American Academy of Sleep Medicine, American Academy of Sleep Medicine, 15 Apr. 2009, www.ncbi.nlm.nih.gov/pmc/articles/PMC2824210/.↩︎

  7. Siegel, Jerome M. “REM Sleep: a Biological and Psychological Paradox.” Sleep Medicine Reviews, U.S. National Library of Medicine, June 2011, www.ncbi.nlm.nih.gov/pmc/articles/PMC3091378/. ↩︎

LS0tCnRpdGxlOiAiTWFtbWFsIFNsZWVwIEJlaGF2aW9yIgphdXRob3I6ICJKb3NlbHluIEFuZ2VsZXMgYW5kIFBpcHBhIEdhbGxhZ2hlciIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBmYWxzZQogICAgdG9jX2Zsb2F0OiBmYWxzZQogICAgdGhlbWU6IHlldGkKICAgIGRmX3ByaW50OiBwYWdlZAogICAgY29kZV9kb3dubG9hZDogdHJ1ZQotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKCgpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ3QpCmxpYnJhcnkocGxvdGx5KQpsaWJyYXJ5KHBhdGNod29yaykKbGlicmFyeShrYWJsZUV4dHJhKQpsaWJyYXJ5KGh0bWx0b29scykKbGlicmFyeShmbGV4ZGFzaGJvYXJkKQpzbGVlcDwtcmVhZC5jc3YoIlNsZWVwSW5NYW1tYWxzLmNzdiIpCmBgYAoKIVtDYXQgU2xlZXBpbmddKGltYWdlcy9pbWFnZTMuanBnKXtLb21vcmksIE1hc2F0YWthLiAyMDE1fQoqKkludHJvZHVjdGlvbioqCgpTbGVlcCBpcyBhIG5hdHVyYWwgcGhlbm9tZW5vbiB0aGF0IGlzIHViaXF1aXRvdXMgZm9yIG1hbW1hbHM7IHJlZ2FyZGxlc3Mgb2Ygc3BlY2llcywgc2xlZXAgaXMgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgbWFtbWFsaWFuIHBoeXNpb2xvZ3kuIEZvciBodW1hbnMsIHNsZWVwIHNwZWNpYWxpc3RzIHJlY29tbWVuZCB0aGF0IGFkdWx0cyBnZXQgYXJvdW5kIDcgdG8gOSBob3VycyBvZiBzbGVlcCBwZXIgZGF5XltPbHNvbiwgRXJpYy4g4oCcSG93IE1hbnkgSG91cnMgb2YgU2xlZXAgRG8gWW91IE5lZWQ/4oCdIE1heW8gQ2xpbmljLCBNYXlvIEZvdW5kYXRpb24gZm9yIE1lZGljYWwgRWR1Y2F0aW9uIGFuZCBSZXNlYXJjaCwgNiBKdW5lIDIwMTksIHd3dy5tYXlvY2xpbmljLm9yZy9oZWFsdGh5LWxpZmVzdHlsZS9hZHVsdC1oZWFsdGgvZXhwZXJ0LWFuc3dlcnMvaG93LW1hbnktaG91cnMtb2Ytc2xlZXAtYXJlLWVub3VnaC9mYXEtMjAwNTc4OTguXSwgd2hpY2ggbWVhbnMgdGhhdCBvbiBhdmVyYWdlIHdlIHNwZW5kIGFib3V0IOKFkyBvZiBvdXIgbGl2ZXMgc2xlZXBpbmcuIAoKYGBge3IsIGVjaG89RkFMU0V9Ckc0IDwtCiAgc2xlZXAgJT4lIAogICBmaWx0ZXIoU3BlY2llcy5vZi5hbmltYWwgJWluJSBjKCJIb3JzZSIsICJDb3ciLCAiUGlnIiwgIkh1bWFuIiwgIlNoZWVwIiwgIkNoaW1wYW56ZWUiLCAiR29hdCIsICJCYWJvb24iLCAiUmVkIGZveCIsICJDYXQiLCAiUmFiYml0IiwgIlJhdCIsICJHcm91bmQgc3F1aXJyZWwiLCAiTW91c2UiKSkgJT4lIAogIG11dGF0ZShUb3RhbF9ob3Vyc19zbGVlcGluZ19saWZlID0gVG90YWwuc2xlZXAuLmhycy5kYXkuICogKE1heGltdW0ubGlmZS5zcGFuLi55ZWFycy4gKiAzNjUpLAogICAgICAgICBUb3RhbF9ob3Vyc19hbGl2ZSA9IE1heGltdW0ubGlmZS5zcGFuLi55ZWFycy4gKiAzNjUgKiAyNCwKICAgICAgICAgUHJvcF9zcGVudF9zbGVlcGluZyA9IChUb3RhbF9ob3Vyc19zbGVlcGluZ19saWZlL1RvdGFsX2hvdXJzX2FsaXZlKSAqMTAwKSAlPiUgCiAgIGdncGxvdCgpICsKICBnZW9tX2NvbChhZXMoeSA9IFByb3Bfc3BlbnRfc2xlZXBpbmcsIAogICAgICAgICAgICAgICB4ID0gZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsUHJvcF9zcGVudF9zbGVlcGluZyxtZWRpYW4pLAogICAgICAgICAgICAgIGZpbGwgPSBNYXhpbXVtLmxpZmUuc3Bhbi4ueWVhcnMuKSkgKwogIGdlb21fdGV4dChhZXMoeSA9IFByb3Bfc3BlbnRfc2xlZXBpbmcgKyAyMCwgeD1mY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCxQcm9wX3NwZW50X3NsZWVwaW5nLG1lZGlhbiksIGxhYmVsPSBTcGVjaWVzLm9mLmFuaW1hbCksIGNvbG9yPSJ3aGl0ZSIsIGZvbnRmYWNlPSJib2xkIixhbHBoYT0wLjYsIHNpemU9Mi41LCBpbmhlcml0LmFlcyA9IEZBTFNFICkgKwogIGNvb3JkX3BvbGFyKHN0YXJ0ID0gMCkgKwogIHlsaW0oLTUsOTApICsKICAgdGhlbWUoCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjMGEyMDNiIiksCiAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiIzBhMjAzYiIpLAogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjMGEyMDNiIiksCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksCiAgICBwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLAogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwKICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLAogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwKICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLAogICAgcGxvdC5jYXB0aW9uLnBvc2l0aW9uID0gInBsb3QiLAogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA3KSkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQoaGlnaCA9ICIjMjQ3M2RiIiwgbG93ID0gIiNjM2RlZmYiKSArCiAgbGFicyh0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIE1hbW1hbHMnIExpdmVzIFNwZW50IFNsZWVwaW5nIiwKICAgICAgIHggPSAiIiwKICAgICAgIHkgPSAiIiwKICAgICAgIGNhcHRpb24gPSAiUGlwcGEgR2FsbGFnaGVyIGFuZCBKb3NlbHluIEFuZ2VsZXMiLAogICAgICAgZmlsbCA9ICJNYXhpbXVtIExpZmUgU3BhbiIpCiAgCkc0IApgYGAKCiBOdW1lcm91cyBzdHVkaWVzIGhhdmUgc2hvd24gdGhhdCB0aGlzIG5lZWQgZm9yIHNsZWVwIGlzIHRpZWQgdG8gYSBteXJpYWQgb2YgcGh5c2ljYWwgYW5kIG1lbnRhbCBoZWFsdGggYmVuZWZpdHMsIGluY2x1ZGluZyBib29zdGluZyBpbW11bml0eSwgaW1wcm92aW5nIG1lbW9yeSBhbmQgbGVhcm5pbmcgZnVuY3Rpb25zXlvigJxCZW5lZml0cyBvZiBTbGVlcC7igJ0gQmVuZWZpdHMgb2YgU2xlZXAgfCBIZWFsdGh5IFNsZWVwLCBoZWFsdGh5c2xlZXAubWVkLmhhcnZhcmQuZWR1L2hlYWx0aHkvbWF0dGVycy9iZW5lZml0cy1vZi1zbGVlcC4gXSwgYW5kIGV2ZW4gZW5oYW5jaW5nIG1lbnRhbCBhbmQgZW1vdGlvbmFsIHJlc2lsaWVuY2UgdG8gcHJvYmxlbXNeW1B1Ymxpc2hpbmcsIEhhcnZhcmQgSGVhbHRoLiDigJxTbGVlcCBhbmQgTWVudGFsIEhlYWx0aC7igJ0gSGFydmFyZCBIZWFsdGgsIHd3dy5oZWFsdGguaGFydmFyZC5lZHUvbmV3c2xldHRlcl9hcnRpY2xlL3NsZWVwLWFuZC1tZW50YWwtaGVhbHRoLl0uIFNjaWVudGlzdHMgcG9zaXQgdGhhdCBvdGhlciBtYW1tYWxzIG5lZWQgc2xlZXAgZm9yIHNpbWlsYXIgcmVhc29ucywgZmluZGluZyB0aGF0IHNsZWVwLWRlcHJpdmVkIGFuaW1hbHMgd2lsbCBsb3NlIHdlaWdodCBkZXNwaXRlIGZvb2QgaW50YWtlLCBhbmQgaGF2ZSBpc3N1ZXMgcmVndWxhdGluZyB0aGVpciBib2R5IHRlbXBlcmF0dXJlLCByZXN1bHRpbmcgaW4gdGhlaXIgZGVhdGheW1B1cnZlcywgRGFsZS4g4oCcV2h5IERvIEh1bWFucyBhbmQgTWFueSBPdGhlciBBbmltYWxzIFNsZWVwP+KAnSBOZXVyb3NjaWVuY2UuIDJuZCBFZGl0aW9uLiwgVS5TLiBOYXRpb25hbCBMaWJyYXJ5IG9mIE1lZGljaW5lLCAxIEphbi4gMTk3MCwgd3d3Lm5jYmkubmxtLm5paC5nb3YvYm9va3MvTkJLMTExMDgvLl0uCiAKICFbU2VhbCBTbGVlcGluZ10oaW1hZ2VzL2ltYWdlMS5wbmcpe1NjaGVpZGVyLCBSb2xmLiBTbGVlcGluZyBsaWtlIGEgV2VkZGVsbC4gMjAxOX0KCkhvd2V2ZXIsIGRlc3BpdGUgdGhlc2UgdW5kZW5pYWJsZSBoZWFsdGggYmVuZWZpdHMsIHNsZWVwIGFsc28gcG9zZXMgY29uc2lkZXJhYmxlIHJpc2tzIHRvIHRoZSBzdXJ2aXZhbCBvZiBtYW1tYWxzLiBJbiBhIHN0dWR5IGNvbmR1Y3RlZCBieSBUcnVldHQgQWxsaXNvbiBhbmQgRG9tZW5pYyBWLiBDaWNjaGV0dGksIHRoZXkgZXhwbG9yZSB0aGUg4oCcaW50ZXJyZWxhdGlvbnNoaXBzIGJldHdlZW4gc2xlZXAsIGVjb2xvZ2ljYWwsIGFuZCBjb25zdGl0dXRpb25hbCB2YXJpYWJsZXPigJ0gZm9yIDQwIG1hbW1hbGlhbiBzcGVjaWVzLCBpbmNsdWRpbmcgaHVtYW5zXltBbGxpc29uLCBUICYgQ2ljY2hldHRpLCBEb21lbmljLiAoMTk3NikuIFNsZWVwIGluIE1hbW1hbHMg4oCTIEVjb2xvZ2ljYWwgYW5kIENvbnN0aXR1dGlvbmFsIENvcnJlbGF0ZXMuIFNjaWVuY2UgKE5ldyBZb3JrLCBOLlkuKS4gMTk0LiA3MzItNC4gMTAuMTEyNi9zY2llbmNlLjk4MjAzOS5dLiAKCgoKYGBge3IsIGVjaG89RkFMU0V9CgpzbGVlcF90YWJkYXRhPC1zbGVlcCAlPiUgCiAgc2VsZWN0KCFHZXN0YXRpb24udGltZS4uZGF5cy46T3ZlcmFsbC5kYW5nZXIuaW5kZXgpICU+JSAKICBhcnJhbmdlKGRlc2MoQm9keS5XZWlnaHQuLmtnLikpCgoKCmd0KHNsZWVwX3RhYmRhdGEsIHJvd25hbWVfY29sID0gInJvdyIsCiAgIGdyb3VwbmFtZV9jb2wgPSAiZ3JvdXAiKSAlPiUgCiAgdGFiX29wdGlvbnMoY29udGFpbmVyLmhlaWdodCA9IDQ1MCwKICAgICAgICAgICAgICBjb250YWluZXIub3ZlcmZsb3cueSA9IFRSVUUpICU+JSAKICB0YWJfaGVhZGVyKAogICAgdGl0bGUgPSBtZCgiKipTbGVlcCBQYXR0ZXJucyBpbiBNYW1tYWxzKioiKSkgJT4lIAogIHRhYl9mb290bm90ZSgKICAgIGZvb3Rub3RlID0gIldlaWdodCBpbiBraWxvZ3JhbXMiLCAKICAgIGxvY2F0aW9ucyA9IGNlbGxzX2NvbHVtbl9sYWJlbHMoCiAgICAgIGNvbHVtbnMgPSAyKSkgJT4lIAogIHRhYl9mb290bm90ZSgKICAgIGZvb3Rub3RlID0gIldlaWdodCBpbiBncmFtcyIsCiAgICBsb2NhdGlvbnMgPSBjZWxsc19jb2x1bW5fbGFiZWxzKAogICAgICBjb2x1bW5zID0gMykpICU+JQogIHRhYl9mb290bm90ZSgKICAgIGZvb3Rub3RlID0gIk5vbi1kcmVhbWluZyBob3VycyBwZXIgZGF5IiwKICAgIGxvY2F0aW9ucyA9IGNlbGxzX2NvbHVtbl9sYWJlbHMoCiAgICAgIGNvbHVtbnMgPSA0KSkgJT4lCiAgdGFiX2Zvb3Rub3RlKAogICAgZm9vdG5vdGUgPSAiRHJlYW1pbmcgaG91cnMgcGVyIGRheSIsCiAgICBsb2NhdGlvbnMgPSBjZWxsc19jb2x1bW5fbGFiZWxzKAogICAgICBjb2x1bW5zID0gNSkpICU+JSAKICBjb2xzX2xhYmVsKAogICAgU3BlY2llcy5vZi5hbmltYWw9IlNwZWNpZXMiLAogICAgQm9keS5XZWlnaHQuLmtnLj0iQm9keSBXZWlnaHQiLAogICAgQnJhaW4uV2VpZ2h0Li5nLiA9IkJyYWluIFdlaWdodCIsCiAgICBTbG93LndhdmUuc2xlZXAuLmhycy5kYXkuID0gIlNsb3cgV2F2ZSBTbGVlcCIsCiAgICBQYXJhZG94aWNhbC5zbGVlcC4uaHJzLmRheS4gPSAiUGFyYWRveGljYWwgU2xlZXAiLAogICAgVG90YWwuc2xlZXAuLmhycy5kYXkuCT0gIlRvdGFsIFNsZWVwIiwKICAgIE1heGltdW0ubGlmZS5zcGFuLi55ZWFycy4gPSJNYXhpbXVtIExpZmUgU3BhbiAoeXJzKSIpCmBgYAoKVGhlaXIgcmVzZWFyY2ggZmluZHMgdGhhdCBzbG93LXdhdmUgYW5kIHBhcmFkb3hpY2FsIHNsZWVwIGluIG1hbW1hbHMgYXJlIHRpZWQgdG8gcGh5c2ljYWwgY2hhcmFjdGVyaXN0aWNzIHN1Y2ggYXMgYm9keSBzaXplIGFuZCBicmFpbiBzaXplLCBhbmQgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zLiBNb3Jlb3ZlciwgdGhlaXIgcmVzZWFyY2ggcHJvZHVjZWQgYW4gb3ZlcmFsbCBkYW5nZXIgaW5kZXggZm9yIGVhY2ggYW5pbWFsLCB3aGljaCB3YXMgY2FsY3VsYXRlZCBhcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBwcmVkYXRpb24gaW5kZXgsIG9yIHRoZSBsaWtlbGlob29kIGFuIGFuaW1hbCBpcyB0byBiZSBwcmV5ZWQgdXBvbiwgYW5kIHRoZSBzbGVlcCBleHBvc3VyZSBpbmRleCwgb3IgdGhlIGhvdyBleHBvc2VkIGFuIGFuaW1hbOKAmXMgaGFiaXRhdCBpcyB3aGlsZSB0aGV5IHNsZWVwLiAKCmBgYHtyLCBlY2hvPUZBTFNFfQpwcmVkZ3JhcGg8LXNsZWVwICU+JSAKICBnZ3Bsb3QoYWVzKHg9UHJlZGF0aW9uLmluZGV4LCAKICAgICAgICAgICAgIHk9ZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsIFByZWRhdGlvbi5pbmRleCksCiAgICAgICAgICAgICBmaWxsPVByZWRhdGlvbi5pbmRleCksCiAgICAgICAgIGNvbG9yPSJ3aGl0ZSIpICsKICBnZW9tX2NvbCgpICsKICBsYWJzKHRpdGxlPSAiUHJlZGF0aW9uIEluZGV4IGJ5IFNwZWNpZXMiLAogICAgICAgeT0iIiwKICAgICAgIHg9IiIsCiAgICAgICBmaWxsPSAiUHJlZGF0aW9uIEluZGV4IikrCiAgdGhlbWVfbWluaW1hbCgpKwogIHRoZW1lKHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsIAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoPSJyZWQiLCBsb3c9ImJsdWUiKQoKZXhwZ3JhcGg8LXNsZWVwICU+JSAKICBnZ3Bsb3QoYWVzKHg9U2xlZXAuZXhwb3N1cmUuaW5kZXgsCiAgICAgICAgICAgICB5PSBmY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCwgU2xlZXAuZXhwb3N1cmUuaW5kZXgpLAogICAgICAgICAgICAgZmlsbD1TbGVlcC5leHBvc3VyZS5pbmRleCksCiAgICAgICAgIGNvbG9yPSJ3aGl0ZSIpICsgCiAgZ2VvbV9jb2woKSsKICBsYWJzKHRpdGxlPSAiU2xlZXAgRXhwb3N1cmUgSW5kZXggYnkgU3BlY2llcyIsCiAgICAgICB5PSIiLAogICAgICAgeD0iIiwKICAgICAgIGZpbGw9ICJTbGVlcCBFeHBvc3VyZSBJbmRleCIpKwogIHRoZW1lX21pbmltYWwoKSsKICB0aGVtZShwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLCAKICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQoaGlnaD0icmVkIiwgbG93PSJibHVlIikKCm92ZXJhbGw8LXNsZWVwICU+JSAKICBnZ3Bsb3QoYWVzKHg9T3ZlcmFsbC5kYW5nZXIuaW5kZXgsCiAgICAgICAgICAgICB5PSBmY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCwgT3ZlcmFsbC5kYW5nZXIuaW5kZXgpLAogICAgICAgICAgICAgZmlsbD1PdmVyYWxsLmRhbmdlci5pbmRleCksCiAgICAgICAgIGNvbG9yPSJ3aGl0ZSIpICsgCiAgZ2VvbV9jb2woKSsKICBsYWJzKHRpdGxlPSAiT3ZlcmFsbCBEYW5nZXIgSW5kZXggYnkgU3BlY2llcyIsCiAgICAgICB5PSIiLAogICAgICAgeD0iIiwKICAgICAgIGZpbGw9ICJPdmVyYWxsIERhbmdlciBJbmRleCIpKwogIHRoZW1lX21pbmltYWwoKSsKICB0aGVtZShwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLCAKICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoPSJyZWQiLCBsb3c9ImJsdWUiKQoKKHByZWRncmFwaCB8IGV4cGdyYXBoKQpgYGAKYGBge3IsIGVjaG89RkFMU0V9CnNsZWVwICU+JSAKICBnZ3Bsb3QoYWVzKHg9T3ZlcmFsbC5kYW5nZXIuaW5kZXgsCiAgICAgICAgICAgICB5PSBmY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCwgT3ZlcmFsbC5kYW5nZXIuaW5kZXgpLAogICAgICAgICAgICAgZmlsbD1PdmVyYWxsLmRhbmdlci5pbmRleCksCiAgICAgICAgIGNvbG9yPSJ3aGl0ZSIpICsgCiAgZ2VvbV9jb2woKSsKICBsYWJzKHRpdGxlPSAiT3ZlcmFsbCBEYW5nZXIgSW5kZXggYnkgU3BlY2llcyIsCiAgICAgICB5PSIiLAogICAgICAgeD0iIiwKICAgICAgIGZpbGw9ICJPdmVyYWxsIERhbmdlciBJbmRleCIpKwogIHRoZW1lX21pbmltYWwoKSsKICB0aGVtZShwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLCAKICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoPSJyZWQiLCBsb3c9ImJsdWUiKQpgYGAKCgoqKlNsb3ctV2F2ZSB2cy4gUGFyYWRveGljYWwgU2xlZXAqKgoKU2xvdy13YXZlIHNsZWVwIGludm9sdmVzIHRoZSBzdGFnZXMgb2Ygbm9uLWRyZWFtaW5nIHNsZWVwIGFuZCBpcyB0eXBpY2FsbHkgZGVzY3JpYmVkIGFzIOKAnGRlZXAgc2xlZXDigJ1eW1JvdGgsIFRob21hcy4g4oCcU2xvdyBXYXZlIFNsZWVwOiBEb2VzIEl0IE1hdHRlcj/igJ0gSm91cm5hbCBvZiBDbGluaWNhbCBTbGVlcCBNZWRpY2luZSA6IEpDU00gOiBPZmZpY2lhbCBQdWJsaWNhdGlvbiBvZiB0aGUgQW1lcmljYW4gQWNhZGVteSBvZiBTbGVlcCBNZWRpY2luZSwgQW1lcmljYW4gQWNhZGVteSBvZiBTbGVlcCBNZWRpY2luZSwgMTUgQXByLiAyMDA5LCB3d3cubmNiaS5ubG0ubmloLmdvdi9wbWMvYXJ0aWNsZXMvUE1DMjgyNDIxMC8uXSB3aGlsZSBwYXJhZG94aWNhbCBzbGVlcCBpcyB0aGUgUkVNIHBhcnQgb2YgdGhlIHNsZWVwIGN5Y2xlLCBhbmQgaXMgY2hhcmFjdGVyaXplZCBieSBkcmVhbWluZyBzbGVlcF5bU2llZ2VsLCBKZXJvbWUgTS4g4oCcUkVNIFNsZWVwOiBhIEJpb2xvZ2ljYWwgYW5kIFBzeWNob2xvZ2ljYWwgUGFyYWRveC7igJ0gU2xlZXAgTWVkaWNpbmUgUmV2aWV3cywgVS5TLiBOYXRpb25hbCBMaWJyYXJ5IG9mIE1lZGljaW5lLCBKdW5lIDIwMTEsIHd3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUMzMDkxMzc4Ly4gXS5Ub2dldGhlciwgdGhlc2UgY29udHJpYnV0ZSB0byB0aGUgdG90YWwgaG91cnMgb2Ygc2xlZXAgaW4gbWFtbWFscy4gCgpgYGB7ciwgZWNobz1GQUxTRX0KRzUgPC0Kc2xlZXAgJT4lIAogIHBpdm90X2xvbmdlcihjb2xzID0gU2xvdy53YXZlLnNsZWVwLi5ocnMuZGF5LjpQYXJhZG94aWNhbC5zbGVlcC4uaHJzLmRheS4sIG5hbWVzX3RvID0gIkRyZWFtX1R5cGUiLCB2YWx1ZXNfdG8gPSAiSG91cnMiKSAlPiUgCiAgZ2dwbG90KCkgKwogIGdlb21fY29sKGFlcyh4ID0gSG91cnMsIHkgPSBmY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCwgSG91cnMpLCBmaWxsID0gRHJlYW1fVHlwZSkpICsKICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgRHJlYW1pbmcgdnMgTm9uLURyZWFtaW5nIFNsZWVwIiwKICAgICAgIHkgPSAiIiwKICAgICAgIHggPSAiIiwKICAgICAgIGZpbGwgPSAiU2xlZXAgVHlwZSIsCiAgICAgICBjYXB0aW9uID0gIlBpcHBhIEdhbGxhZ2hlciBhbmQgSm9zZWx5biBBbmdlbGVzIiwKICAgICAgIHN1YnRpdGxlID0gIiAgICAiKSArCiAgdGhlbWUoCiAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gNi41KSwKICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIiMwYTIwM2IiKSwKICAgIHBsb3QuY2FwdGlvbi5wb3NpdGlvbiA9ICJwbG90IgogICkgKwogIHNjYWxlX3hfY29udGludW91cyhleHBhbmQgPSBjKDAsMCkpICsKICBzY2FsZV9maWxsX21hbnVhbChsYWJlbHMgPSBjKCJEcmVhbWluZyIsICJOb24tRHJlYW1pbmciKSwgdmFsdWVzID0gYygic2t5Ymx1ZSIsIiMwYTIwM2IiKSkKCkc1ICAKYGBgCgpBbGxpc29uIGFuZCBDaWNoZXR0aSBmaW5kIHRoYXQgdHlwZSBvZiBzbGVlcCBpcyByZWxhdGVkIGluIGRpZmZlcmVudCB3YXlzIHRvIHRoZSBzdXJ2aXZhbCBvZiBtYW1tYWxzLiBGb3IgZXhhbXBsZSwgc2xvdyB3YXZlIHNsZWVwIGlzIG5lZ2F0aXZlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZSBib2R5IHNpemUgb2YgbWFtbWFscywgd2hpY2ggaW1wbGllcyB0aGF0IGxvbmdlciBzbG93IHdhdmUgc2xlZXAgY3ljbGVzIGNhbiBiZSBtb3JlIGRhbmdlcm91cyBmb3IgbGFyZ2VyIGFuaW1hbHMuIEhvd2V2ZXIsIHBhcmFkb3hpY2FsIHNsZWVwIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGhpZ2hlciBwcmVkYXRpb24gaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgbGFyZ2UgYW1vdW50cyBvZiB0aGlzIHNsZWVwIGN5Y2xlIGNhbiBiZSByaXNreSBmb3IgcHJleSBzcGVjaWVzLiAKCmBgYHtyLCBlY2hvPUZBTFNFfQpzbGVlcF9ncmFwaDwtCiAgc2xlZXAgJT4lIAogIG11dGF0ZShib2R5X3d0bGJzID0gQm9keS5XZWlnaHQuLmtnLioyLjIwNDYyKSAlPiUgIAogIGFycmFuZ2UoZGVzYyhib2R5X3d0bGJzKSkgJT4lIAogIGdncGxvdChhZXMoCiAgICB5ID0gYm9keV93dGxicywgCiAgICB4ID0gU2xvdy53YXZlLnNsZWVwLi5ocnMuZGF5LiwKICAgIHNpemUgPSBib2R5X3d0bGJzLAogICAgYWxwaGEgPSAuNSwKICAgIGNvbG9yPSBTcGVjaWVzLm9mLmFuaW1hbCkpKwogIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICJTbG93LXdhdmUgc2xlZXAgYW5kIGJvZHkgc2l6ZSAobGJzKSIsCiAgICAgICB4ID0gIiIsCiAgICAgICB5ID0gIiIpICsKICB0aGVtZShwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJOb25lIikgCgpnZ3Bsb3RseShzbGVlcF9ncmFwaCkgJT4lIAogIGhpZGVfbGVnZW5kKCkgCgoKCgpgYGAKCgpgYGB7ciwgZWNobz1GQUxTRX0KRzcgPC0KICBzbGVlcCAlPiUgCiAgZmlsdGVyKFNwZWNpZXMub2YuYW5pbWFsICVpbiUgYygiSG9yc2UiLCAiQ293IiwgIlBpZyIsICJIdW1hbiIsICJTaGVlcCIsICJDaGltcGFuemVlIiwgIkdvYXQiLCAiQmFib29uIiwgIlJlZCBmb3giLCAiQ2F0IiwgIlJhYmJpdCIsICJSYXQiLCAiR3JvdW5kIHNxdWlycmVsIiwgIk1vdXNlIikpICU+JSAKICBzZWxlY3QoU3BlY2llcy5vZi5hbmltYWwsUGFyYWRveGljYWwuc2xlZXAuLmhycy5kYXkuICxTbGVlcC5leHBvc3VyZS5pbmRleCkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX2NvbChhZXMoeSA9IFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiwgCiAgICAgICAgICAgICAgIHggPSBmY3RfcmVvcmRlcihTcGVjaWVzLm9mLmFuaW1hbCxQYXJhZG94aWNhbC5zbGVlcC4uaHJzLmRheS4sbWVkaWFuKSwKICAgICAgICAgICAgICAgZmlsbCA9IFNsZWVwLmV4cG9zdXJlLmluZGV4KSkgKwogIGdlb21fdGV4dChhZXMoeSA9IFBhcmFkb3hpY2FsLnNsZWVwLi5ocnMuZGF5LiArIDIsIHg9ZmN0X3Jlb3JkZXIoU3BlY2llcy5vZi5hbmltYWwsUGFyYWRveGljYWwuc2xlZXAuLmhycy5kYXkuLG1lZGlhbiksIGxhYmVsPSBTcGVjaWVzLm9mLmFuaW1hbCksIGNvbG9yPSJ3aGl0ZSIsIGZvbnRmYWNlPSJib2xkIixhbHBoYT0wLjYsIHNpemU9Mi41LCBpbmhlcml0LmFlcyA9IEZBTFNFICkgKwogIGxhYnModGl0bGUgPSAiRHJlYW1pbmcgSG91cnMgb2YgU2xlZXAgcGVyIERheSIsCiAgICAgICBjYXB0aW9uID0gIlBpcHBhIEdhbGxhZ2hlciBhbmQgSm9zZWx5biBBbmdlbGVzIiwKICAgICAgIHN1YnRpdGxlID0gIlRoaXMgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBob3VycyBvZiBwYXJhZG94aWNhbCAoZHJlYW1pbmcpIHNsZWVwIGVhY2ggbWFtbWFsLCBvbiBhdmVyZ2FlLCBoYXMgZWFjaCBuaWdodC5cblRoZSBTbGVlcCBNZWFzdXJlIEluZGV4IGRldGVybWluZXMgaG93IHZ1bG5lcmFibGUgdGhlIG1hbW1hbCBpcyB3aGVuIHNsZWVwaW5nLCB3aXRoIDEgYmVpbmcgdGhlIGxlYXN0IHZ1bG5lcmJhbGVcbmFuZCA1IHRoZSBtb3N0LiIsCiAgICAgICB5ID0gIiIsCiAgICAgICB4ID0gIiIsCiAgICAgICBmaWxsID0gIlNsZWVwIEV4cG9zdXJlIEluZGV4IikgKwogIGNvb3JkX3BvbGFyKHN0YXJ0ID0gMCkgKwogIHlsaW0oLTEuNSw2KSArCiAgICAgdGhlbWUoCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjMGEyMDNiIiksCiAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiIzBhMjAzYiIpLAogICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjMGEyMDNiIiksCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIndoaXRlIiksCiAgICBwbG90LnRpdGxlLnBvc2l0aW9uID0gInBsb3QiLAogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwKICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLAogICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAid2hpdGUiKSwKICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIpLAogICAgcGxvdC5jYXB0aW9uLnBvc2l0aW9uID0gInBsb3QiLAogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJ3aGl0ZSIsIHNpemUgPSA3KSkgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQoaGlnaCA9ICIjMjQ3M2RiIiwgbG93ID0gIiNjM2RlZmYiKQoKRzcKCmBgYAoKClVsdGltYXRlbHksIHRoZWlyIGZpbmRpbmdzIG91dGxpbmUgdGhlIGRpbWVuc2lvbnMgb2Ygc3Vydml2YWwgd2hpbGUgbWFtbWFscyBzbGVlcCwgaGlnaGxpZ2h0aW5nIHRoZSB2YXJpb3VzIGZhY3RvcnMgdGhhdCBlbmRhbmdlciBhbmltYWxzIGluIG1vbWVudHMgb2YgcmVzdCwgYW5kIGhvdyB0aGVpciBwaHlzaWNhbCBhbmQgcGh5c2lvbG9naWNhbCBjb25kaXRpb25zIHJlc3BvbmQgdG8gdGhlc2UgZGFuZ2Vycy4KCiFbTW9ua2V5IFNsZWVwaW5nXShpbWFnZXMvaW1hZ2U0LmpwZyl7U2N1ZmZpbnMsIENocmlzLiAyMDE1fQoKCgoKCgoKCgoK